package com.marketing.tenant.dto;

import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;
import javax.validation.constraints.Email;
import javax.validation.constraints.Min;

/**
 * 更新租户请求DTO
 */
public class UpdateTenantRequest {

    @NotNull(message = "租户ID不能为空")
    private Long id;

    @NotBlank(message = "租户编码不能为空")
    @Size(max = 50, message = "租户编码长度不能超过50个字符")
    private String tenantCode;

    @NotBlank(message = "租户名称不能为空")
    @Size(max = 200, message = "租户名称长度不能超过200个字符")
    private String tenantName;

    @Size(max = 20, message = "租户类型长度不能超过20个字符")
    private String tenantType;

    @Size(max = 100, message = "域名长度不能超过100个字符")
    private String domain;

    @Min(value = 1, message = "最大用户数不能小于1")
    private Integer maxUsers;

    @Min(value = 0, message = "最大存储空间不能为负数")
    private Long maxStorage;

    @NotBlank(message = "联系人姓名不能为空")
    @Size(max = 100, message = "联系人姓名长度不能超过100个字符")
    private String contactName;

    @NotBlank(message = "联系人邮箱不能为空")
    @Email(message = "联系人邮箱格式不正确")
    @Size(max = 200, message = "联系人邮箱长度不能超过200个字符")
    private String contactEmail;

    @Size(max = 50, message = "联系人电话长度不能超过50个字符")
    private String contactPhone;

    @Size(max = 200, message = "公司名称长度不能超过200个字符")
    private String companyName;

    @Size(max = 100, message = "所属行业长度不能超过100个字符")
    private String industry;

    @Size(max = 50, message = "国家代码长度不能超过50个字符")
    private String country;

    @Size(max = 50, message = "时区长度不能超过50个字符")
    private String timezone;

    @Size(max = 10, message = "语言长度不能超过10个字符")
    private String language;

    @Size(max = 500, message = "备注长度不能超过500个字符")
    private String remark;

    // Getter和Setter方法
    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public String getTenantCode() {
        return tenantCode;
    }

    public void setTenantCode(String tenantCode) {
        this.tenantCode = tenantCode;
    }

    public String getTenantName() {
        return tenantName;
    }

    public void setTenantName(String tenantName) {
        this.tenantName = tenantName;
    }

    public String getTenantType() {
        return tenantType;
    }

    public void setTenantType(String tenantType) {
        this.tenantType = tenantType;
    }

    public String getDomain() {
        return domain;
    }

    public void setDomain(String domain) {
        this.domain = domain;
    }

    public Integer getMaxUsers() {
        return maxUsers;
    }

    public void setMaxUsers(Integer maxUsers) {
        this.maxUsers = maxUsers;
    }

    public Long getMaxStorage() {
        return maxStorage;
    }

    public void setMaxStorage(Long maxStorage) {
        this.maxStorage = maxStorage;
    }

    public String getContactName() {
        return contactName;
    }

    public void setContactName(String contactName) {
        this.contactName = contactName;
    }

    public String getContactEmail() {
        return contactEmail;
    }

    public void setContactEmail(String contactEmail) {
        this.contactEmail = contactEmail;
    }

    public String getContactPhone() {
        return contactPhone;
    }

    public void setContactPhone(String contactPhone) {
        this.contactPhone = contactPhone;
    }

    public String getCompanyName() {
        return companyName;
    }

    public void setCompanyName(String companyName) {
        this.companyName = companyName;
    }

    public String getIndustry() {
        return industry;
    }

    public void setIndustry(String industry) {
        this.industry = industry;
    }

    public String getCountry() {
        return country;
    }

    public void setCountry(String country) {
        this.country = country;
    }

    public String getTimezone() {
        return timezone;
    }

    public void setTimezone(String timezone) {
        this.timezone = timezone;
    }

    public String getLanguage() {
        return language;
    }

    public void setLanguage(String language) {
        this.language = language;
    }

    public String getRemark() {
        return remark;
    }

    public void setRemark(String remark) {
        this.remark = remark;
    }
}